package fsmsim.dataStructure;

/**
 * <p>Title: FSMSim</p>
 *
 * <p>Description: Simulatore di macchine a stati finiti.</p>
 *
 * <p>Copyright: Copyright (c) 2008</p>
 *
 * <p>Company: Bollati, Donati, Gabrielli, Peli</p>
 *
 * @author Bollati, Donati, Gabrielli, Peli
 * @version 3.0
 */

public abstract class Element {

    private String name;
 
    
    /**
     * Costruttore
     * @param name
     */
    
    public Element(String name) {
        this.name = name;
    }
    
    
    /**
     * Inserisce il valore nel nome
     * @param name
     */
    
    public void setName(String name) {
        this.name = name;
    }
    
    
    /**
     * Restituisce il nome dell'elemento
     * @return
     */
    
    public String getName() {
        return this.name;
    }
    
    
    /**
     * Metodo toString
     * @return
     */
    
    @Override
    public String toString() {
        return getName();
    }

    
    /**
     * Fa il match con l'elemento
     * @param aElement
     * @return
     */
    
    abstract public boolean matchElement(Element aElement);
    
    
    /**
     * Composite
     * @param position
     * @return
     */
    
    public Element getElement(int position) {
        return null;
    }
    
       /**
     * Aggiunge un elemento all'oggetto composto: transizioni
     * @param aElement
     */
       
    public void addElement(Element aElement) {
        return;
    }
    
    
    /**
     * Rimuove un elemento dall'oggetto composto: transizioni
     * @param aElement
     */
    
    public void removeElement(Element aElement) {
        return;
    }
    
}
